package com.example.mapper;

import com.example.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 用户信息Mapper接口
 * 作用：定义数据库操作的方法
 */
@Mapper // 标识这是一个MyBatis的Mapper接口，Spring Boot会自动扫描并创建实现
public interface UserInfoMapper {

    /**
     * 根据用户名查询用户信息
     * @param userName 用户名
     * @return 用户信息实体，如果不存在则返回null
     *
     * @Select注解：定义SQL查询语句
     * #{userName}：MyBatis的参数占位符，会自动防止SQL注入
     * delete_flag = 0：只查询未删除的用户
     */
    @Select("SELECT id, user_name, password, delete_flag, create_time, update_time " +
            "FROM user_info WHERE user_name = #{userName} AND delete_flag = 0")
    UserInfo selectByUserName(@Param("userName") String userName);

    /**
     * 根据用户名和密码查询用户信息
     * @param userName 用户名
     * @param password 密码
     * @return 用户信息实体，如果不存在或密码不匹配则返回null
     *
     * 实际项目中密码应该加密比较，这里为了演示直接明文比较
     */
    @Select("SELECT id, user_name, password, delete_flag, create_time, update_time " +
            "FROM user_info WHERE user_name = #{userName} AND password = #{password} AND delete_flag = 0")
    UserInfo selectByUserNameAndPassword(@Param("userName") String userName,
                                         @Param("password") String password);
}